// pages/main/workorder/apply-workorder/apply-workorder.js
Page({
  data: {
    // 工单类型
    workorderType: '',
    otherType: '', // 其他类型的自定义输入
    typeOptions: [
      { label: '硬件', value: 'hardware' },
      { label: '软件', value: 'software' },
      { label: '信息咨询', value: 'consultation' },
      { label: '其他', value: 'other' }
    ],
    
    // 处理内容
    content: '',
    
    // 上传的图片列表
    images: [],
    
    // 当前位置
    location: '',
    
    // 预约处理时间
    appointmentDate: '',
    appointmentTime: '',
    timeSlots: [], // 可选时间段
    
    // 提交状态
    submitting: false
  },

  onLoad() {
    // 初始化当前时间
    this.initCurrentTime();
    // 初始化时间段
    this.initTimeSlots();
  },

  // 初始化当前时间
  initCurrentTime() {
    const now = new Date();
    const year = now.getFullYear();
    const month = String(now.getMonth() + 1).padStart(2, '0');
    const day = String(now.getDate()).padStart(2, '0');
    const hour = String(now.getHours()).padStart(2, '0');
    const minute = String(now.getMinutes()).padStart(2, '0');
    
    this.setData({
      appointmentDate: `${year}-${month}-${day}`,
      appointmentTime: `${hour}:${minute}`,
      minDate: `${year}-${month}-${day}` // 设置最小日期为今天
    });
  },

  // 初始化时间段
  initTimeSlots() {
    const slots = [];
    for (let hour = 8; hour <= 18; hour++) {
      for (let minute = 0; minute < 60; minute += 30) {
        const timeStr = `${String(hour).padStart(2, '0')}:${String(minute).padStart(2, '0')}`;
        slots.push(timeStr);
      }
    }
    this.setData({
      timeSlots: slots
    });
  },

  // 选择工单类型
  onTypeChange(e) {
    const value = e.detail.value;
    this.setData({
      workorderType: value,
      otherType: value !== 'other' ? '' : this.data.otherType // 如果不是其他类型，清空自定义输入
    });
  },

  // 输入其他类型
  onOtherTypeInput(e) {
    this.setData({
      otherType: e.detail.value
    });
  },

  // 输入处理内容
  onContentInput(e) {
    this.setData({
      content: e.detail.value
    });
  },

  // 输入位置
  onLocationInput(e) {
    this.setData({
      location: e.detail.value
    });
  },


  // 选择预约日期
  onDateChange(e) {
    this.setData({
      appointmentDate: e.detail.value
    });
  },

  // 选择预约时间
  onTimeChange(e) {
    this.setData({
      appointmentTime: e.detail.value
    });
  },

  // 图片选择器变化事件（根据官方文档：event.detail.all 包含所有图片）
  onImagePickerChange(e) {
    console.log('图片选择器变化事件:', e);
    const { current, all } = e.detail;
    console.log('当前图片:', current);
    console.log('所有图片:', all);
    
    // 根据官方文档，使用 e.detail.all 更新所有图片
    this.setData({
      images: all || []
    }, () => {
      console.log('图片数据已更新:', this.data.images);
    });
  },

  // 图片删除事件（根据官方文档：event.detail.all 包含删除后的所有图片）
  onImageRemove(e) {
    console.log('删除图片事件:', e);
    const { current, all, index } = e.detail;
    console.log('删除的图片:', current);
    console.log('删除后的所有图片:', all);
    console.log('删除的索引:', index);
    
    // 根据官方文档，使用 e.detail.all 更新删除后的图片列表
    this.setData({
      images: all || []
    });
  },

  // 提交工单
  onSubmit() {
    // 验证工单类型
    if (!this.data.workorderType) {
      wx.showToast({
        title: '请选择工单类型',
        icon: 'none'
      });
      return;
    }

    if (this.data.workorderType === 'other' && !this.data.otherType.trim()) {
      wx.showToast({
        title: '请输入其他类型',
        icon: 'none'
      });
      return;
    }

    // 验证处理内容
    if (!this.data.content.trim()) {
      wx.showToast({
        title: '请输入处理内容',
        icon: 'none'
      });
      return;
    }

    // 验证处理内容长度
    if (this.data.content.trim().length < 10) {
      wx.showToast({
        title: '处理内容至少需要10个字符',
        icon: 'none',
        duration: 2000
      });
      return;
    }

    // 验证位置
    if (!this.data.location.trim()) {
      wx.showToast({
        title: '请输入当前位置',
        icon: 'none'
      });
      return;
    }

    // 验证预约时间
    if (!this.data.appointmentDate || !this.data.appointmentTime) {
      wx.showToast({
        title: '请选择预约处理时间',
        icon: 'none'
      });
      return;
    }

    // 验证预约时间不能是过去的时间
    const appointmentDateTime = new Date(`${this.data.appointmentDate} ${this.data.appointmentTime}`);
    const now = new Date();
    if (appointmentDateTime <= now) {
      wx.showToast({
        title: '预约时间不能是过去的时间',
        icon: 'none',
        duration: 2000
      });
      return;
    }

    this.setData({ submitting: true });

    // 获取用户名
    const username = wx.getStorageSync('username') || '';

    // 调用后端API提交数据
    wx.request({
      url: `${getApp().globalData.serverUrl}/SubmitWorkorder/`,
      method: 'POST',
      data: {
        workorder_type: this.data.workorderType,
        other_type: this.data.otherType,
        content: this.data.content,
        images: this.data.images,
        location: this.data.location,
        appointment_date: this.data.appointmentDate,
        appointment_time: this.data.appointmentTime,
        username: username
      },
      success: (res) => {
        this.setData({ submitting: false });
        
        if (res.data.status) {
          wx.showToast({
            title: res.data.message || '提交成功',
            icon: 'success',
            duration: 2000
          });
          
          // 清空表单
          this.resetForm();
          
          // 2秒后返回上一页
          setTimeout(() => {
            wx.navigateBack();
          }, 2000);
        } else {
          wx.showToast({
            title: res.data.message || '提交失败',
            icon: 'none',
            duration: 2000
          });
        }
      },
      fail: (err) => {
        console.error('提交工单失败:', err);
        this.setData({ submitting: false });
        wx.showToast({
          title: '网络错误，请稍后重试',
          icon: 'none',
          duration: 2000
        });
      }
    });
  },

  // 重置表单
  resetForm() {
    this.setData({
      workorderType: '',
      otherType: '',
      content: '',
      images: [],
      location: ''
    });
    this.initCurrentTime();
  }
});

